package br.com.rest.server;

import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import com.google.gson.Gson;

import br.com.rest.model.ParametroSomaCalculadora;
import br.com.rest.model.ResultadoCalculadora;

@Path("/calc")
public class Calculadora {

	@GET
	@Path("/soma/{a}/{b}")
	@Produces(MediaType.APPLICATION_JSON)
	@Consumes(MediaType.TEXT_PLAIN)
	public String soma(@PathParam("a") int a, @PathParam("b") int b) {
		ResultadoCalculadora resultado = new ResultadoCalculadora(a + b);
		
		Gson gson = new Gson();
		return gson.toJson(resultado);
		
//		return String.valueOf(resultado.getResultado());
	}
	
	@POST
	@Path("/somaJson")
	@Produces(MediaType.APPLICATION_JSON)
	public String somaJson(@FormParam("json") String json) {
		Gson gson = new Gson();
		ParametroSomaCalculadora param = gson.fromJson(json, ParametroSomaCalculadora.class); 
		
		ResultadoCalculadora resultado = new ResultadoCalculadora(param.getValor1() + param.getValor2());
		
		return gson.toJson(resultado);
	}

	@POST
	@Path("/subtrair/{a}/{b}")
	public String subtrair(@PathParam("a") int a,
			@PathParam("b") int b) {
		return String.valueOf(a - b);
	}

	@POST
	@Path("/subtrair2")
	public String subtrair2(@PathParam("a") Integer a, @PathParam("b") Integer b) {
		return String.valueOf(a - b);
	}

	@POST
	@Path("/subtrair3")
	public String subtrair3(@FormParam("a") int a, @FormParam("b") int b) {
		return String.valueOf(a - b);
	}
}
